/*
* leetcode 120. 三角形最小路径和
*
给定一个三角形 triangle ，找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。
相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。
也就是说，如果正位于当前行的下标 i ，那么下一步可以移动到下一行的下标 i 或 i + 1 。
 */
/*
* */
import java.util.*;
class Solution {
    public int minimumTotal(List<List<Integer>> triangle) {
        int n=triangle.size();List<Integer> list;
        int[] dp=new int[n];
        for(int i=0;i<n;i++){
            dp[i]=triangle.get(n-1).get(i);
        }
        for(int i=n-2;i>=0;i--){
            list=triangle.get(i);
            for(int j=0;j<=i;j++){
                dp[j]=Math.min(dp[j],dp[j+1])+list.get(j);
            }
        }
        return dp[0];
    }
}